"""
set集合，最主要的特点就是：不支持元素的重复（自带去重功能）、并且内容无序

定义
# 定义集合字面量
{元素, 元素,...., 元素}

# 定义集合变量
变量名称 = {元素, 元素,...., 元素}

# 定义空集合
变量名称 = set()

因为要对元素做去重处理，所以无法保证顺序和创建的时候一致
因为集合是无序的，所以集合不支持：下标索引访问
"""

name = {"鸣人", "卡莉熙", "志田未来"}
names = {
    "鸣人",
    "卡莉熙",
    "志田未来",
    "鸣人",
    "卡莉熙",
    "志田未来",
    "鸣人",
    "卡莉熙",
    "志田未来",
}
# 结果中可见：去重且无序
print(name)  # {'鸣人', '卡莉熙', '志田未来'}
print(names)  # {'鸣人', '卡莉熙', '志田未来'}


name = {"鸣人", "卡莉熙", "志田未来"}
print(f"name内原元素为:{name}")

name.add("太宰治")
name.add("鸣人")
print(f"添加了新元素后，name内的元素为：{name}")

name.remove("卡莉熙")
print(f"移除了旧元素后，name内的元素为：{name}")

name_pop = name.pop()
print(f"随机取出了name中的 {name_pop} 元素")

name.clear()
print(f"清除了所有元素后，name内的元素为：{name}")


# 取出2个集合的差集
name01 = {"鸣人", "卡莉熙", "志田未来"}
name02 = {"琪琪", "凯路斯·利马尽", "志田未来"}
name03 = name02.difference(name01)
print(f"name02列表在name01中不同的元素为：{name03}")

name02.difference_update(name01)
print(f"在集合name02中删除name01中的元素,name01没变化：{name01}")
print(f"在集合name02中删除name01中的元素，name02还剩余元素为：{name02}")

name04 = name02.union(name01)
print(f"合并完两个对象之间的元素后，name04里的元素为：{name04}")

print(f"name04里的元素长度为：{len(name04)}")

name05 = {"大雄", "小雄"}
for i in name05:
    print(i)


name = [
    "三藏",
    "Harry Potter",
    "柿子",
    "远坂凛",
    "赤井秀一",
    "远坂凛",
    "加藤惠",
    "Harry Potter",
    "Tony Stark",
    "Harry Potter",
    "Sheldon Cooper",
]
new_name = set()
for i in name:
    new_name.add(i)

print(f"原先的元素为：{name}")
print(f"变成集合后，集合内的元素为：{new_name}")
